package doc2db;

import doc2db.DbManager.DbSelects;
import doc2db.fileWorker.FileBeginer;
import doc2db.interfaces.WaitFrame;
import doc2db.interfaces.autent.AutentFrame;
import doc2db.interfaces.mainWindow.MyFrame;
import doc2db.stdstreams.MyOut;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;

/**
 *Напрямок: 050101 – Комп’ютерні науки
Спеціальність: 7.080401 – Інформаційні управляючі системи та технології

АІ-072


 * @author yuriy
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(Keey.lookAndFeel());
        } catch (Exception ex) {
        }

        JFrame wait = new WaitFrame().initWaitFrame();
        wait.setVisible(true);

        ReadARGS readARGS = new ReadARGS(args);
        readARGS.toProcessArgs();

        //перехват потока вывода и потока ошибок
        MyOut out = new MyOut();
        if (!Keey.notMyOut) {
            System.setOut(out.out);
        }
        if (!Keey.notMyErr) {
            System.setErr(out.err);
        }

        //проверка и создание конфигурационных файлов
        FileBeginer fb = new FileBeginer();
        fb.createFiles();


        AutentFrame autentFrame = new AutentFrame(readARGS.getUser(), readARGS.getPswd());
        boolean b = false;
        if (!Keey.isAutentComplete) {
            wait.setVisible(false);
            autentFrame.setVisible(true);
        } else {
            b = true;
        }

        while (!Keey.isAutentComplete) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
            }
        }
        if (b) {
            wait.setVisible(true);
        }

        if (UserProp.user.equals("__NULL") || UserProp.pswd.equals("__NULL")) {
            System.exit(0);
        }

        new UserProp().insertData();

        try {
            UIManager.setLookAndFeel(UserProp.lookAndFeel);
            //SwingUtilities.updateComponentTreeUI(f);
        } catch (Exception ex) {
            if (Keey.debug) {
                System.err.println("" + javax.swing.UIManager.getSystemLookAndFeelClassName());
            }
            UserProp.lookAndFeel = javax.swing.UIManager.getSystemLookAndFeelClassName();
        }
        
        MyFrame f = new MyFrame(out.getPane());
        wait.setVisible(false);
        f.setVisible(true);
        createBeginerConect(f);
    }

    public static void createBeginerConect(MyFrame f) {
        UserProp up = new UserProp();
        UserProp.userInDb = UserProp.user;
        UserProp.pswdInDb = UserProp.pswd;
        DbSelects dBManager = null;
        try {
            dBManager = new DbSelects(up.getURL(), up.getUserProp());
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Соеденение отвергнуто: SQL exception",
                    "error! ", JOptionPane.ERROR_MESSAGE);
            UserProp.userInDb = "__NULL";
            UserProp.pswdInDb = "__NULL";
            return;
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, "Соеденение отвергнуто: Wrong driver",
                    "error! ", JOptionPane.ERROR_MESSAGE);
            UserProp.userInDb = "__NULL";
            UserProp.pswdInDb = "__NULL";
            return;
        }
        boolean ret = dBManager.isConnected();
        if (ret) {
            Keey.isConnected = true;
            f.toolBar.setEnableButton(true);
            f.menu.setEnableButton(true);
        } else {
            JOptionPane.showMessageDialog(null, "Соеденение отвергнуто: Runtime",
                    "error! ", JOptionPane.ERROR_MESSAGE);
            UserProp.userInDb = "__NULL";
            UserProp.pswdInDb = "__NULL";
        }
    }
}
